package com.yys.service.serviceImpl;

import com.yys.service.yysService;
import com.yys.util.yysUtil;
import org.springframework.stereotype.Service;

import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.util.Map;

@Service
public class yysServiceImpl implements yysService {

    boolean flag = true;
    int allcount;
    int ii = 0;
    Color go;
    int clickcount = 0;//点击次数

    @Override
    public int startone(int x, int y, int time, int count) {//单人

        int allcount = 1;
        yysUtil.go(x, y);
        for (int i = 1; i <count; i++) {
            yysUtil.start(x, y);
            yysUtil.logtime("正在自动进行了第" + (i) + "次");
            yysUtil.wait(time, x, y);
            allcount = i;
            if (flag == false) {
                return allcount + 1;
            }
        }
        yysUtil.logtime("次数已经刷完，正常结束！5秒后自动关闭服务");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        yysUtil.logtime("服务已关闭");
        System.exit(0);
        return allcount;
    }

    @Override
    public int starttwo(int x1, int y1, int x2, int y2, int time, int count) {//多人x1为司机
//        this.flag = true;

//        if (count < ii) {
//            ii = 0;
//            flag = false;
//        }

  //      if (flag == false) {
  //          return allcount + 1;
  //      }
        if (ii == 0) {//初始化条件
            go = yysUtil.go(x1, y1);//初始化，并获得该点的颜色信息
            yysUtil.logtime("初始化...");

        } else {

            yysUtil.go(x1, y1);//不获取颜色信息
        }


        // yysUtil.go(x1, y1);//初始化，并获得该点的颜色信息


        Robot robot = null;
        try {
            robot = new Robot();
        } catch (AWTException e) {
            e.printStackTrace();
        }


        for (int i = ii; i <=count-1; i++, ii++) {
            Color pixelColor = robot.getPixelColor(x1, y1);
        //    System.out.println("已经自动进行了第" + (i + 1) + "次");


            if (go.equals(pixelColor)) {//判断两次相同位置的颜色是否相同

                clickcount = 0;//重新赋值0

                yysUtil.start(x1, y1);
                yysUtil.logtime("正在自动进行了第" + (i + 1) + "次");
                yysUtil.wait(time, x1, y1);
                try {
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                for (int j = 1; j <= yysUtil.randomarea(2, 3); j++) {//移动到另外一个号点击5~6次


                    yysUtil.moveAndClick(x2, y2);//移动到另外一个号
                }


//                if (flag == false) {
//                    return allcount;
//                }


            } else {

                for (int j = 1; j <= yysUtil.randomarea(3, 5); j++) {//移动到另外一个号点击5~6次让他回队伍

                    yysUtil.moveAndClick(x2, y2);//移动到另外一个号

                    clickcount++;
                    if (clickcount >= 15) {//点击次数大于15次即为无响应，终止运行
                        // return allcount;
                        flag = false;
                    }


                }

             //   allcount = i + 1;

                if (flag == false) {
                    yysUtil.logtime("从机长时间不归队,异常结束！5秒后自动关闭服务");

                    try {
                        Thread.sleep(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    yysUtil.logtime("服务已关闭");
                    System.exit(0);
                    return allcount + 1;
                }
                starttwo(x1, y1, x2, y2, time, count);


            }


        }


        yysUtil.logtime("次数已经刷完，正常结束！5秒后自动关闭服务");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        yysUtil.logtime("服务已关闭");
        System.exit(0);
        return allcount;
    }

    @Override
    public void end() {
        // this.flag = false;
        System.out.println("系统正在重新启动...");
        try {
            yysUtil.restart();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    @Override
    public void end1() {
        System.exit(0);
    }

}
